home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / soundeff.pas < prev    next >
Pascal/Delphi Source File  |  1986-05-14  |  5KB  |  315 lines

  1. program sound_effects;
  2.  
  3. type
  4.    longstring = string[80];
  5.  
  6. var
  7.    x    : integer;
  8.    thru : boolean;
  9.    ch   : char;
  10.  
  11. procedure hilite(entry : longstring);
  12.  
  13. var
  14.    rest : string[79];
  15.  
  16. begin
  17.    rest := copy(entry,2,79);
  18.    textcolor(lightblue);
  19.    write(entry[1]);
  20.    textcolor(blue);
  21.    writeln(rest);
  22. end;
  23.  
  24. procedure birdcall;
  25.  
  26. begin
  27.    repeat
  28.       sound(3500);
  29.       delay(random(49));
  30.       nosound;
  31.       delay(50);
  32.       sound(3000);
  33.       delay(random(49));
  34.       nosound;
  35.       delay(50);
  36.       sound(4000);
  37.       delay(random(49));
  38.       nosound;
  39.       delay(50);
  40.    until keypressed;
  41. end;
  42.  
  43. procedure screech;
  44.  
  45. begin
  46.    repeat
  47.       x := 12000;
  48.       while (x>1400) do
  49.       begin
  50.          sound(x);
  51.          delay(6);
  52.          x := x - 100;
  53.       end;
  54.    until keypressed;
  55.    nosound;
  56. end;
  57.  
  58. procedure clocktick;
  59.  
  60. begin
  61.    repeat
  62.       sound(12500);
  63.       delay(19);
  64.       nosound;
  65.       delay(1000);
  66.    until keypressed;
  67. end;
  68.  
  69.  
  70. procedure conveyor;
  71.  
  72. begin
  73.    repeat
  74.       for x := 37 to 100 do
  75.       begin
  76.          sound(x);
  77.          delay(6);
  78.       end;
  79.    until keypressed;
  80.    nosound;
  81. end;
  82.  
  83. procedure doorbell;
  84.  
  85. var
  86.    a : integer;
  87.  
  88. begin
  89.    repeat
  90.       for x := 1 to 20 do
  91.       begin
  92.          a := 5700;
  93.          while (a < 16000) do
  94.          begin
  95.             sound(a);
  96.             delay(5);
  97.             nosound;
  98.             a := a + 1500;
  99.          end;
  100.       end;
  101.    delay(300);
  102.    until keypressed;
  103. end;
  104.  
  105. procedure generator;
  106.  
  107. begin
  108.    for x := 37 to 300 do
  109.    begin
  110.       sound(x);
  111.       delay(9);
  112.       sound(2*x);
  113.       delay(9);
  114.       sound(3*x);
  115.       delay(9);
  116.    end;
  117.    repeat
  118.       sound(300);
  119.       delay(9);
  120.       sound(600);
  121.       delay(9);
  122.       sound(900);
  123.       delay(9);
  124.    until keypressed;
  125.    nosound;
  126. end;
  127.  
  128. procedure torpedo;
  129.  
  130. begin
  131.    repeat
  132.       x := 4000;
  133.       while (x > 100) do
  134.       begin
  135.          sound(x);
  136.          delay(2);
  137.          sound(round(x/2+37));
  138.          delay(2);
  139.          sound(round(x/3+37));
  140.          delay(2);
  141.          x := x - 150;
  142.       end;
  143.       nosound;
  144.       delay(random(800));
  145.    until keypressed;
  146. end;
  147.  
  148. procedure machine;
  149.  
  150. begin
  151.    repeat
  152.       x := 400;
  153.       while (x > 100) do
  154.       begin
  155.          sound(x);
  156.          delay(3);
  157.          sound(round(x/2+37));
  158.          delay(3);
  159.          sound(round(x/3+37));
  160.          delay(3);
  161.          x := x - 10;
  162.       end;
  163.       nosound;
  164.    until keypressed;
  165. end;
  166.  
  167. procedure fazer;
  168.  
  169. begin
  170.    repeat
  171.       x := 300;
  172.       while (x < 1800) do
  173.       begin
  174.          sound(x);
  175.          delay(9);
  176.          x := x + 100;
  177.       end;
  178.       nosound;
  179.    until keypressed;
  180. end;
  181.  
  182. procedure phone;
  183.  
  184. begin
  185.    repeat
  186.       for x := 1 to 30 do
  187.       begin
  188.          sound(523);
  189.          delay(40);
  190.          sound(659);
  191.          delay(40);
  192.       end;
  193.       nosound;
  194.       delay(1400);
  195.    until keypressed;
  196. end;
  197.  
  198. procedure faucet;
  199.  
  200. begin
  201.    repeat
  202.       x := 800;
  203.       while (x < 1000) do
  204.       begin
  205.          sound(x);
  206.          delay(8);
  207.          x := x + 100;
  208.       end;
  209.       nosound;
  210.       delay(2000);
  211.    until keypressed;
  212. end;
  213.  
  214. procedure computer;
  215.  
  216. begin
  217.    repeat
  218.       sound(random(2000));
  219.       delay(40);
  220.    until keypressed;
  221.    nosound;
  222. end;
  223.  
  224. procedure explosion;
  225.  
  226. var
  227.    a : integer;
  228.  
  229. begin
  230.    repeat
  231.       for x := 1 to 5 do
  232.       begin
  233.          a := 300;
  234.          while (a < 1800) do
  235.          begin
  236.             sound(a);
  237.             delay(8);
  238.             a := a + 150;
  239.          end;
  240.       end;
  241.       nosound;
  242.    until keypressed;
  243. end;
  244.  
  245. procedure saucer;
  246.  
  247. begin
  248.    repeat
  249.       x := 500;
  250.       while (x < 1500) do
  251.       begin
  252.          sound(x);
  253.          delay(41);
  254.          x := x + 200;
  255.       end;
  256.       nosound;
  257.    until keypressed;
  258. end;
  259.  
  260.  
  261. procedure control;
  262.  
  263. begin
  264.   while not thru do
  265.   begin
  266.    clrscr;
  267.    textcolor(blue);
  268.    write('                       SOUND EFFECTS DEMONSTRATION                             ');
  269.    gotoxy(1,5);
  270.    hilite('A Computer Thinking');
  271.    hilite('Bird Call');
  272.    hilite('Conveyor Belt');
  273.    hilite('Doorbell');
  274.    hilite('Explosion');
  275.    hilite('Fazer Fire');
  276.    hilite('Generator Starting');
  277.    hilite('Hawk Screech');
  278.    hilite('Leaking Faucet');
  279.    hilite('Machine Noise');
  280.    hilite('Photon Torpedo');
  281.    hilite('Ringing Phone');
  282.    hilite('Saucer');
  283.    hilite('Ticking Clock');
  284.    writeln('* - End');
  285.    repeat until keypressed;
  286.    read(kbd,ch);
  287.    case upcase(ch) of
  288.      'B' : birdcall;
  289.      'H' : screech;
  290.      'T' : clocktick;
  291.      'C' : conveyor;
  292.      'D' : doorbell;
  293.      'G' : generator;
  294.      'P' : torpedo;
  295.      'M' : machine;
  296.      'F' : fazer;
  297.      'R' : phone;
  298.      'L' : faucet;
  299.      'A' : computer;
  300.      'E' : explosion;
  301.      'S' : saucer;
  302.      '*' : thru := true;
  303.      else writeln('Sorry, not implemented yet!');
  304.    end;
  305.   end;
  306. end;
  307.  
  308. begin
  309.    thru := false;
  310.    control;
  311. end. true;
  312.      else writeln('Sorry, not implemented yet!');
  313.    end;
  314.   end;
  315. en